using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using MakeIT.Framework.Util;
using MakeIT.Alf.Site.Entidades;
using MakeIT.Alf.Site.Negocios;

namespace MakeIT.Alf.Site.Apresentacao
{
    public partial class CadastroImovel : System.Web.UI.Page
    {

        UsuarioVO usuarioVO = null;

        protected void Page_Load(object sender, EventArgs e)
        {
            usuarioVO = (UsuarioVO)this.Session["userActive"];

            if (!IsPostBack)
            {
                atualizarDdlIdImovelTipo(null, null);
                atualizarDdlIdImovelCat(null, null);
                atualizarDdlEstado(null, null);
                atualizarDdlIdPessoa(null, null);

                Util.HabilitarCampos(false, this.panelCad);

                LogtipoVO idTipoLogVO = LogtipoVO.CreateVO();
                idTipoLogVO.idLogTipo = -1;
                idTipoLogVO.sigla = "";
                List<LogtipoVO> idTipoLogVOs = new List<LogtipoVO>();
                idTipoLogVOs.Add(idTipoLogVO);
                idTipoLogVOs.AddRange(AlfDAO.getLogtipos());
                Util.CarregarCombo(this.ddlCadIdTipoLog, idTipoLogVOs);

                this.panelImovelxareacomum.Enabled = false;
                List<AreacomumVO> ImovelxareacomumidAreaComumCadVOs = new List<AreacomumVO>();
                ImovelxareacomumidAreaComumCadVOs.AddRange(AlfDAO.getAreacomums());
                Util.CarregarCombo(this.ddlCadImovelxareacomumIdAreaComum, ImovelxareacomumidAreaComumCadVOs);


                this.panelImovelxcaracteristica.Enabled = false;
                List<CaracteristicaVO> ImovelxcaracteristicaidCaracteristicaCadVOs = new List<CaracteristicaVO>();
                ImovelxcaracteristicaidCaracteristicaCadVOs.AddRange(AlfDAO.getCaracteristicas());
                Util.CarregarCombo(this.ddlCadImovelxcaracteristicaIdCaracteristica, ImovelxcaracteristicaidCaracteristicaCadVOs);

                this.panelImovelxfoto.Enabled = false;
            }

        }

        protected void atualizarDdlIdImovelTipo(object sender, ImageClickEventArgs e)
        {
            List<ImoveltipoVO> itVOLista = new List<ImoveltipoVO>();
            ImoveltipoVO itVO = ImoveltipoVO.CreateVO();
            itVO.idImovelTipo = -1;
            itVO.imovelTipo = "";
            itVOLista.Add(itVO);
            itVOLista.AddRange(AlfDAO.getImoveltipos());
            Util.CarregarCombo(ddlTipoImovel, itVOLista);

            List<ImoveltipoVO> idImovelTipoCadVOs = new List<ImoveltipoVO>();
            ImoveltipoVO idImovelTipoCadVO = ImoveltipoVO.CreateVO();
            idImovelTipoCadVO.idImovelTipo = -1;
            idImovelTipoCadVO.imovelTipo = "";
            idImovelTipoCadVOs.Add(idImovelTipoCadVO);
            idImovelTipoCadVOs.AddRange(AlfDAO.getImoveltipos());
            Util.CarregarCombo(this.ddlCadIdImovelTipo, idImovelTipoCadVOs);

            ddlTipoImovel_SelectedIndexChanged(null, null);
            ddlCadIdImovelTipo_SelectedIndexChanged(null, null);
        }

        protected void atualizarDdlIdImovelCat(object sender, ImageClickEventArgs e)
        {
            List<ImovelcatVO> idImovelCatVOs = new List<ImovelcatVO>();
            ImovelcatVO idImovelcatVO = ImovelcatVO.CreateVO();
            idImovelcatVO.idImovelCat = -1;
            idImovelcatVO.imovelCat = "";
            idImovelCatVOs.Add(idImovelcatVO);
            if (!string.IsNullOrEmpty(ddlCadIdImovelTipo.SelectedValue) && !ddlCadIdImovelTipo.SelectedValue.Equals("-1"))
            {
                idImovelCatVOs.AddRange(AlfDAO.getImovelcats(null, int.Parse(ddlCadIdImovelTipo.SelectedValue), null));
            }
            Util.CarregarCombo(this.ddlCadIdImovelCat, idImovelCatVOs);
        }

        protected void atualizarDdlEstado(object sender, ImageClickEventArgs e)
        {
            List<EstadoVO> idEstadoCadVOs = new List<EstadoVO>();
            EstadoVO idEstadoCadVO = EstadoVO.CreateVO();
            idEstadoCadVO.idEstado = -1;
            idEstadoCadVO.estado = "";
            idEstadoCadVOs.Add(idEstadoCadVO);
            idEstadoCadVOs.AddRange(AlfDAO.getEstados());
            Util.CarregarCombo(this.ddlCadEstado, idEstadoCadVOs);

            List<EstadoVO> eVOLista = new List<EstadoVO>();
            EstadoVO eVO = EstadoVO.CreateVO();
            eVO.idEstado = -1;
            eVO.estado = "";
            eVOLista.Add(eVO);
            eVOLista.AddRange(AlfDAO.getEstados());
            Util.CarregarCombo(ddlEstado, eVOLista);

            ddlEstado_SelectedIndexChanged(null, null);
            ddlCadEstado_SelectedIndexChanged(null, null);
        }

        protected void atualizarDdlCidade(object sender, ImageClickEventArgs e)
        {
            List<CidadeVO> idCidadeVOs = new List<CidadeVO>();
            CidadeVO idCidadeVO = CidadeVO.CreateVO();
            idCidadeVO.idCidade = -1;
            idCidadeVO.cidade = "";
            idCidadeVOs.Add(idCidadeVO);
            if (!string.IsNullOrEmpty(ddlCadEstado.SelectedValue) && !ddlCadEstado.SelectedValue.Equals("-1"))
            {
                idCidadeVOs.AddRange(AlfDAO.getCidades(null, null, int.Parse(ddlCadEstado.SelectedValue)));
            }
            Util.CarregarCombo(this.ddlCadCidade, idCidadeVOs);

            ddlCadCidade_SelectedIndexChanged(null, null);
        }

        protected void atualizarDdlBairro(object sender, ImageClickEventArgs e)
        {
            List<BairroVO> idBairroCadVOs = new List<BairroVO>();
            BairroVO idBairroCadVO = BairroVO.CreateVO();
            idBairroCadVO.idBairro = -1;
            idBairroCadVO.bairro = "";
            idBairroCadVOs.Add(idBairroCadVO);
            if (!string.IsNullOrEmpty(ddlCadCidade.SelectedValue) && !ddlCadCidade.SelectedValue.Equals("-1"))
            {
                idBairroCadVOs.AddRange(AlfDAO.getBairros(null, null, int.Parse(ddlCadCidade.SelectedValue)));
            }
            Util.CarregarCombo(this.ddlCadBairro, idBairroCadVOs);

            ddlCadBairro_SelectedIndexChanged(null, null);
        }

        protected void atualizarDdlLogtipo(object sender, ImageClickEventArgs e)
        {
            List<LogtipoVO> idLogtipoCadVOs = new List<LogtipoVO>();
            idLogtipoCadVOs.AddRange(AlfDAO.getLogtipos());
            Util.CarregarCombo(this.ddlCadIdTipoLog, idLogtipoCadVOs);

            ddlCadIdTipoLog_SelectedIndexChanged(null, null);
        }

        protected void atualizarDdlLogradouro(object sender, ImageClickEventArgs e)
        {
            CarregaLogradouro();
            ddlCadIdLogradouro_SelectedIndexChanged(null, null);
        }

        protected void atualizarDdlIdPessoa(object semder, ImageClickEventArgs e)
        {
            List<PessoaVO> idPessoaVOs = new List<PessoaVO>();
            PessoaVO idPessoaVO = PessoaVO.CreateVO();
            idPessoaVO.idPessoa = -1;
            idPessoaVO.nome = "";
            idPessoaVOs.Add(idPessoaVO);
            idPessoaVOs.AddRange(AlfDAO.getPessoas());

            Util.CarregarCombo(this.ddlIdPromotor, idPessoaVOs);
            Util.CarregarCombo(this.ddlIdIndicador, idPessoaVOs);
            Util.CarregarCombo(this.ddlIdCliente, idPessoaVOs);
            Util.CarregarCombo(this.ddlCadIdPromotor, idPessoaVOs);
            Util.CarregarCombo(this.ddlCadIdIndicador, idPessoaVOs);
            Util.CarregarCombo(this.ddlCadIdCliente, idPessoaVOs);

            ddlCadIdPromotor_SelectedIndexChanged(null, null);
            ddlCadIdIndicador_SelectedIndexChanged(null, null);
            ddlCadIdCliente_SelectedIndexChanged(null, null);
        }

        /// <summary>
        /// Manipula o evento do botão btnSalvar
        /// </summary>
        /// <param name="sender">Objeto disparador do evento</param>
        /// <param name="e">Argumento do evento</param>
        protected void btnSalvar_Click(object sender, EventArgs e)
        {

            //Declara objetos
            ImovelVO imovelVO = null;
            bool novoRegistro = false;

            try
            {
                //Verifica se o ID é nulo, se sim = cadastro novo
                if (string.IsNullOrEmpty(this.txtCadIdImovel.Text))
                {
                    imovelVO = ImovelVO.CreateVO();
                    imovelVO.cadastro = DateTime.Now;
                    imovelVO.cadastradoPor = usuarioVO.user;

                    novoRegistro = true;
                }
                //Recupera dados para serem alterados
                else
                {
                    //Recupera dados
                    imovelVO = AlfDAO.getImovel(Int32.Parse(this.txtCadIdImovel.Text));
                }

                imovelVO.titulo = this.txtCadTitulo.Text;
                imovelVO.descricao = this.txtCadDescricao.Text;
                imovelVO.ativo = this.ddlCadAtivo.SelectedValue.Equals("S");
                imovelVO.idLogradouro = Int32.Parse(this.ddlCadIdLogradouro.SelectedValue);
                if (string.IsNullOrEmpty(this.txtCadEndNum.Text))
                    imovelVO.endNum = null;
                else
                    imovelVO.endNum = this.txtCadEndNum.Text;
                if (string.IsNullOrEmpty(this.txtCadEndCom.Text))
                    imovelVO.endCom = null;
                else
                    imovelVO.endCom = this.txtCadEndCom.Text;
                if (string.IsNullOrEmpty(this.txtCadImediacoes.Text))
                    imovelVO.imediacoes = null;
                else
                    imovelVO.imediacoes = this.txtCadImediacoes.Text;
                if (string.IsNullOrEmpty(this.txtCadAndares.Text))
                    imovelVO.andares = null;
                else
                    imovelVO.andares = Int32.Parse(this.txtCadAndares.Text);
                if (string.IsNullOrEmpty(this.txtCadAptoAndar.Text))
                    imovelVO.aptoAndar = null;
                else
                    imovelVO.aptoAndar = Int32.Parse(this.txtCadAptoAndar.Text);
                if (string.IsNullOrEmpty(this.txtCadAptoPos.Text))
                    imovelVO.aptoPos = null;
                else
                    imovelVO.aptoPos = this.txtCadAptoPos.Text;
                if (string.IsNullOrEmpty(this.txtCadCondominio.Text))
                    imovelVO.condominio = null;
                else
                    imovelVO.condominio = this.txtCadCondominio.Text;
                if (string.IsNullOrEmpty(this.txtCadZelador.Text))
                    imovelVO.zelador = null;
                else
                    imovelVO.zelador = this.txtCadZelador.Text;
                if (string.IsNullOrEmpty(this.txtCadQuartos.Text))
                    imovelVO.quartos = null;
                else
                    imovelVO.quartos = Int32.Parse(this.txtCadQuartos.Text);
                if (string.IsNullOrEmpty(this.txtCadSuites.Text))
                    imovelVO.suites = null;
                else
                    imovelVO.suites = Int32.Parse(this.txtCadSuites.Text);
                if (string.IsNullOrEmpty(this.txtCadAreaTotal.Text))
                    imovelVO.areaTotal = null;
                else
                    imovelVO.areaTotal = decimal.Parse(this.txtCadAreaTotal.Text.Replace(".", ""));
                if (string.IsNullOrEmpty(this.txtCadAreaUtil.Text))
                    imovelVO.areaUtil = null;
                else
                    imovelVO.areaUtil = decimal.Parse(this.txtCadAreaUtil.Text.Replace(".", ""));
                if (string.IsNullOrEmpty(this.txtCadVagasGaragem.Text))
                    imovelVO.vagasGaragem = null;
                else
                    imovelVO.vagasGaragem = Int32.Parse(this.txtCadVagasGaragem.Text);
                if (string.IsNullOrEmpty(this.txtCadVago.Text))
                    imovelVO.vago = null;
                else
                    imovelVO.vago = this.txtCadVago.Text;
                if (string.IsNullOrEmpty(this.txtCadFace.Text))
                    imovelVO.face = null;
                else
                    imovelVO.face = this.txtCadFace.Text;
                if (string.IsNullOrEmpty(this.txtCadFinanciamento.Text))
                    imovelVO.financiamento = null;
                else
                    imovelVO.financiamento = this.txtCadFinanciamento.Text;
                if (string.IsNullOrEmpty(this.txtCadFGTS.Text))
                    imovelVO.fGTS = null;
                else
                    imovelVO.fGTS = this.txtCadFGTS.Text;
                if (this.ddlCadPermuta.SelectedValue.Equals(" "))
                    imovelVO.permuta = null;
                else
                    imovelVO.permuta = this.ddlCadPermuta.SelectedValue.Equals("S");
                if (string.IsNullOrEmpty(this.txtCadVlrCond.Text))
                    imovelVO.vlrCond = null;
                else
                    imovelVO.vlrCond = decimal.Parse(this.txtCadVlrCond.Text.Replace(".", ""));
                if (string.IsNullOrEmpty(this.txtCadPlaca.Text))
                    imovelVO.placa = null;
                else
                    imovelVO.placa = this.txtCadPlaca.Text;
                if (string.IsNullOrEmpty(this.txtCadChaves.Text))
                    imovelVO.chaves = null;
                else
                    imovelVO.chaves = this.txtCadChaves.Text;
                if (string.IsNullOrEmpty(this.txtCadVisitas.Text))
                    imovelVO.visitas = null;
                else
                    imovelVO.visitas = this.txtCadVisitas.Text;
                if (string.IsNullOrEmpty(this.txtCadObs.Text))
                    imovelVO.obs = null;
                else
                    imovelVO.obs = this.txtCadObs.Text;
                if (this.ddlCadIdPromotor.SelectedValue.Equals("-1"))
                    imovelVO.idPromotor = null;
                else
                    imovelVO.idPromotor = Int32.Parse(this.ddlCadIdPromotor.SelectedValue);
                if (this.ddlCadIdIndicador.SelectedValue.Equals("-1"))
                    imovelVO.idIndicador = null;
                else
                    imovelVO.idIndicador = Int32.Parse(this.ddlCadIdIndicador.SelectedValue);
                imovelVO.idCliente = Int32.Parse(this.ddlCadIdCliente.SelectedValue);
                imovelVO.vda = this.ddlCadVda.SelectedValue.Equals("S");
                imovelVO.loc = this.ddlCadLoc.SelectedValue.Equals("S");
                if (string.IsNullOrEmpty(this.txtCadVlrVda.Text))
                    imovelVO.vlrVda = null;
                else
                    imovelVO.vlrVda = decimal.Parse(this.txtCadVlrVda.Text.Replace(".", ""));
                if (string.IsNullOrEmpty(this.txtCadVlrLoc.Text))
                    imovelVO.vlrLoc = null;
                else
                    imovelVO.vlrLoc = decimal.Parse(this.txtCadVlrLoc.Text.Replace(".", ""));
                imovelVO.destaque = Convert.ToChar(rbCadDestaque.SelectedValue);
                imovelVO.idImovelCat = Int32.Parse(this.ddlCadIdImovelCat.SelectedValue);
                imovelVO.edicao = DateTime.Now;
                imovelVO.editadoPor = usuarioVO.user;

                //Chama metodo para salvar ou criar novo registro
                if (novoRegistro)
                    imovelVO.idImovel = (int)AlfDAO.newImovel(imovelVO);
                else
                    AlfDAO.setImovel(imovelVO);

                // Exibe msg de sucesso ao salvar registro
                Util.ExibeAlert(this, "Registro salvo com sucesso!");

                //Popula grid atualizado
                this.btnPesquisa_Click(null, null);

                //Atualiza formulario, apos salvar os dados
                this.txtCadIdImovel.Text = imovelVO.idImovel.ToString();
                this.ltCadastradoPor.Text = imovelVO.cadastradoPor;
                this.ltEditadoPor.Text = imovelVO.editadoPor;
                this.ltDataCadastro.Text = imovelVO.cadastro.ToString("dd/MM/yyyy");
                this.ltDataEdicao.Text = imovelVO.edicao.ToString("dd/MM/yyyy");

                //habilita Imovelxareacomum
                if (!this.panelImovelxareacomum.Enabled)
                {
                    this.ltCadImovelxareacomumImovel.Text = imovelVO.ToString();
                    Util.HabilitarCampos(false, this.panelImovelxareacomum);
                    this.panelImovelxareacomum.Enabled = true;
                    this.btnCadImovelxareacomumSalvar.Enabled = false;
                    this.btnCadImovelxareacomumEditar.Enabled = false;
                    this.btnCadImovelxareacomumExcluir.Enabled = false;
                    this.btnCadImovelxareacomumNovo.Enabled = true;
                }
                //habilita Imovelxcaracteristica
                if (!this.panelImovelxcaracteristica.Enabled)
                {
                    this.ltCadImovelxcaracteristicaImovel.Text = imovelVO.ToString();
                    Util.HabilitarCampos(false, this.panelImovelxcaracteristica);
                    this.panelImovelxcaracteristica.Enabled = true;
                    this.btnCadImovelxcaracteristicaSalvar.Enabled = false;
                    this.btnCadImovelxcaracteristicaEditar.Enabled = false;
                    this.btnCadImovelxcaracteristicaExcluir.Enabled = false;
                    this.btnCadImovelxcaracteristicaNovo.Enabled = true;
                }
                //habilita Imovelxfoto
                if (!this.panelImovelxfoto.Enabled)
                {
                    this.ltCadImovelxfotoImovel.Text = imovelVO.ToString();
                    Util.HabilitarCampos(false, this.panelImovelxfoto);
                    this.panelImovelxfoto.Enabled = true;
                    this.btnCadImovelxfotoSalvar.Enabled = false;
                    this.btnCadImovelxfotoEditar.Enabled = false;
                    this.btnCadImovelxfotoExcluir.Enabled = false;
                    this.btnCadImovelxfotoNovo.Enabled = true;
                    //Habilita botoes da imagem fotoLarge
                    this.btCadImovelxfotoFotoLargeRemover.Enabled = true;
                    this.afuCadImovelxfotoFotoLargeUpload.Enabled = true;
                    this.btCadImovelxfotoFotoLargeVisualizar.Enabled = true;
                }
            }
            catch (Exception ex)
            {

                throw ex;
            }
        }

        /// <summary>
        /// Manipula o evento do botão btnPesquisa
        /// </summary>
        /// <param name="sender">Objeto disparador do evento</param>
        /// <param name="e">Argumento do evento</param>
        protected void btnPesquisa_Click(object sender, EventArgs e)
        {
            //Declara objetos
            int? idImovel = null;
            string titulo = null;
            bool? ativo = null;
            string imediacoes = null;
            string zelador = null;
            string vago = null;
            bool? permuta = null;
            string placa = null;
            string chaves = null;
            string visitas = null;
            bool? vda = null;
            bool? loc = null;
            decimal? vlrVda = null;
            decimal? vlrLoc = null;
            int? idImovelCat = null;
            double? valorMinimo = null;
            double? valoMaximo = null;
            int? tipoImovel = null;
            int? dorms = null;
            int? vagas = null;
            int? bairro = null;
            int? cidade = null;
            int? estado = null;
            int? idPromotor = null;
            int? idCliente = null;
            int? idIndicador = null;

            try
            {

                if (!string.IsNullOrEmpty(this.txtIdImovel.Text))
                {
                    idImovel = Int32.Parse(this.txtIdImovel.Text);
                }

                if (!string.IsNullOrEmpty(this.txtTitulo.Text))
                {
                    titulo = this.txtTitulo.Text;
                }

                if (!this.ddlAtivo.SelectedValue.Equals(" "))
                {
                    ativo = this.ddlAtivo.SelectedValue.Equals("S");
                }

                if (!string.IsNullOrEmpty(this.txtImediacoes.Text))
                {
                    imediacoes = this.txtImediacoes.Text;
                }

                if (!string.IsNullOrEmpty(this.txtZelador.Text))
                {
                    zelador = this.txtZelador.Text;
                }

                if (!string.IsNullOrEmpty(this.txtVago.Text))
                {
                    vago = this.txtVago.Text;
                }

                if (!this.ddlPermuta.SelectedValue.Equals(" "))
                {
                    permuta = this.ddlPermuta.SelectedValue.Equals("S");
                }

                if (!string.IsNullOrEmpty(this.txtPlaca.Text))
                {
                    placa = this.txtPlaca.Text;
                }

                if (!string.IsNullOrEmpty(this.txtChaves.Text))
                {
                    chaves = this.txtChaves.Text;
                }

                if (!string.IsNullOrEmpty(this.txtVisitas.Text))
                {
                    visitas = this.txtVisitas.Text;
                }

                if (!this.ddlVda.SelectedValue.Equals(" "))
                {
                    vda = this.ddlVda.SelectedValue.Equals("S");
                }

                if (!this.ddlLoc.SelectedValue.Equals(" "))
                {
                    loc = this.ddlLoc.SelectedValue.Equals("S");
                }

                if (!string.IsNullOrEmpty(this.txtVlrVda.Text))
                {
                    vlrVda = decimal.Parse(this.txtVlrVda.Text.Replace(".", ""));
                }

                if (!string.IsNullOrEmpty(this.txtVlrLoc.Text))
                {
                    vlrLoc = decimal.Parse(this.txtVlrLoc.Text.Replace(".", ""));
                }

                if (!string.IsNullOrEmpty(this.ddlIdImovelCat.SelectedValue) && !this.ddlIdImovelCat.SelectedValue.Equals("-1"))
                {
                    idImovelCat = Int32.Parse(this.ddlIdImovelCat.SelectedValue);
                }
                if (!string.IsNullOrEmpty(this.txtValorMinimo.Text))
                {
                    valorMinimo = double.Parse(this.txtValorMinimo.Text.Replace(".", ""));
                }
                if (!string.IsNullOrEmpty(this.txtValorMaximo.Text))
                {
                    valoMaximo = double.Parse(this.txtValorMaximo.Text.Replace(".", ""));
                }
                if (!string.IsNullOrEmpty(this.ddlTipoImovel.SelectedValue) && !this.ddlTipoImovel.SelectedValue.Equals("-1"))
                {
                    tipoImovel = Int32.Parse(this.ddlTipoImovel.SelectedValue);
                }
                if (!string.IsNullOrEmpty(this.txtDorms.Text))
                {
                    dorms = Int32.Parse(this.txtDorms.Text);
                }
                if (!string.IsNullOrEmpty(this.txtVagas.Text))
                {
                    vagas = Int32.Parse(this.txtVagas.Text);
                }

                if (!String.IsNullOrEmpty(this.ddlBairro.SelectedValue) && !this.ddlBairro.SelectedValue.Equals("-1"))
                {
                    bairro = Int32.Parse(this.ddlBairro.SelectedValue);
                }
                if (!String.IsNullOrEmpty(this.ddlCidade.SelectedValue) && !this.ddlCidade.SelectedValue.Equals("-1"))
                {
                    cidade = Int32.Parse(this.ddlCidade.SelectedValue);
                }
                if (!String.IsNullOrEmpty(this.ddlEstado.SelectedValue) && !this.ddlEstado.SelectedValue.Equals("-1"))
                {
                    estado = Int32.Parse(this.ddlEstado.SelectedValue);
                }

                if (!String.IsNullOrEmpty(this.ddlIdPromotor.SelectedValue) && !this.ddlIdPromotor.SelectedValue.Equals("-1"))
                {
                    idPromotor = Int32.Parse(this.ddlIdPromotor.SelectedValue);
                }
                if (!String.IsNullOrEmpty(this.ddlIdIndicador.SelectedValue) && !this.ddlIdIndicador.SelectedValue.Equals("-1"))
                {
                    idIndicador = Int32.Parse(this.ddlIdIndicador.SelectedValue);
                }
                if (!String.IsNullOrEmpty(this.ddlIdCliente.SelectedValue) && !this.ddlIdCliente.SelectedValue.Equals("-1"))
                {
                    idCliente = Int32.Parse(this.ddlIdCliente.SelectedValue);
                }

                //Recupera a lista de registros segundo a pesquisa
                this.grvResultado.DataSource =
                     AlfDAO.getImovels(idImovel, titulo, idPromotor, idIndicador, idCliente, idImovelCat, null, zelador, vago, permuta, placa,
                                       chaves, visitas, vda, loc, vlrVda, vlrLoc, dorms, vagas, valoMaximo, valorMinimo,
                                       tipoImovel, bairro, cidade, estado, null, null, null, ativo);

                //Vincula os dados
                this.grvResultado.DataBind();
            }
            catch (Exception ex)
            {

                throw ex;
            }
        }

        /// <summary>
        /// Manipula o evento do botão btnCancelar
        /// </summary>
        /// <param name="sender">Objeto disparador do evento</param>
        /// <param name="e">Argumento do evento</param>
        protected void btnCancelar_Click(object sender, EventArgs e)
        {
            //Volta para a tab page de pesquisa
            //this.tabImovel.ActiveTabIndex = 0;

            // Desabilita os campos para edição
            Util.HabilitarCampos(false, this.panelCad);

            // Destrava botão de edição
            this.btnEditar.Enabled = (!string.IsNullOrEmpty(this.txtCadIdImovel.Text));

            // Destrava botão de exclusao
            this.btnExcluir.Enabled = (!string.IsNullOrEmpty(this.txtCadIdImovel.Text));

            // Detrava botão de novo
            this.btnNovo.Enabled = true;

            // Desabilita o botão salvar
            this.btnSalvar.Enabled = false;

        }

        protected void imgbVisualizar_Click(object sender, ImageClickEventArgs e)
        {
            // Declara objetos
            ImovelVO imovelVO = null;
            int idImovel = 0;

            try
            {
                //Recupera os argumentos com o ID do objeto
                string[] argumentos = ((ImageButton)sender).CommandArgument.Split(';');
                idImovel = Int32.Parse(argumentos[0]);

                //Recupera o objeto
                imovelVO = AlfDAO.getImovel(idImovel);

                this.txtCadIdImovel.Text = imovelVO.idImovel.ToString();
                this.txtCadTitulo.Text = imovelVO.titulo;
                this.txtCadDescricao.Text = imovelVO.descricao;

                this.ddlCadAtivo.SelectedValue = (imovelVO.ativo == null ? " " : (imovelVO.ativo.Value ? "S" : "N"));

                buscaLogradouro(imovelVO.idLogradouro);
                buscaTipoImovel(imovelVO.idImovelCat);

                this.txtCadEndNum.Text = imovelVO.endNum;
                this.txtCadEndCom.Text = imovelVO.endCom;
                this.txtCadImediacoes.Text = imovelVO.imediacoes;
                if (imovelVO.andares == null)
                    this.txtCadAndares.Text = null;
                else
                    this.txtCadAndares.Text = imovelVO.andares.Value.ToString();
                if (imovelVO.aptoAndar == null)
                    this.txtCadAptoAndar.Text = null;
                else
                    this.txtCadAptoAndar.Text = imovelVO.aptoAndar.Value.ToString();
                this.txtCadAptoPos.Text = imovelVO.aptoPos;
                this.txtCadCondominio.Text = imovelVO.condominio;
                this.txtCadZelador.Text = imovelVO.zelador;
                if (imovelVO.quartos == null)
                    this.txtCadQuartos.Text = null;
                else
                    this.txtCadQuartos.Text = imovelVO.quartos.Value.ToString();
                if (imovelVO.suites == null)
                    this.txtCadSuites.Text = null;
                else
                    this.txtCadSuites.Text = imovelVO.suites.Value.ToString();
                if (imovelVO.areaTotal == null)
                    this.txtCadAreaTotal.Text = null;
                else
                    this.txtCadAreaTotal.Text = String.Format("{0:n2}", imovelVO.areaTotal.Value);
                if (imovelVO.areaUtil == null)
                    this.txtCadAreaUtil.Text = null;
                else
                    this.txtCadAreaUtil.Text = String.Format("{0:n2}", imovelVO.areaUtil.Value);
                if (imovelVO.vagasGaragem == null)
                    this.txtCadVagasGaragem.Text = null;
                else
                    this.txtCadVagasGaragem.Text = imovelVO.vagasGaragem.Value.ToString();
                this.txtCadVago.Text = imovelVO.vago;
                this.txtCadFace.Text = imovelVO.face;
                this.txtCadFinanciamento.Text = imovelVO.financiamento;
                this.txtCadFGTS.Text = imovelVO.fGTS;
                this.ddlCadPermuta.SelectedValue = (imovelVO.permuta == null ? " " : (imovelVO.permuta.Value ? "S" : "N"));
                if (imovelVO.vlrCond == null)
                    this.txtCadVlrCond.Text = null;
                else
                    this.txtCadVlrCond.Text = String.Format("{0:n2}", imovelVO.vlrCond.Value);
                this.txtCadPlaca.Text = imovelVO.placa;
                this.txtCadChaves.Text = imovelVO.chaves;
                this.txtCadVisitas.Text = imovelVO.visitas;
                this.txtCadObs.Text = imovelVO.obs;
                if (imovelVO.idPromotor == null)
                    this.ddlCadIdPromotor.SelectedValue = "-1";
                else
                    this.ddlCadIdPromotor.SelectedValue = imovelVO.idPromotor.Value.ToString();
                ddlCadIdPromotor_SelectedIndexChanged(null, null);

                if (imovelVO.idIndicador == null)
                    this.ddlCadIdIndicador.SelectedValue = "-1";
                else
                    this.ddlCadIdIndicador.SelectedValue = imovelVO.idIndicador.Value.ToString();
                ddlCadIdIndicador_SelectedIndexChanged(null, null);

                this.ddlCadIdCliente.SelectedValue = imovelVO.idCliente.ToString();
                ddlCadIdCliente_SelectedIndexChanged(null, null);

                this.ddlCadVda.SelectedValue = (imovelVO.vda == null ? " " : (imovelVO.vda.Value ? "S" : "N"));
                this.ddlCadLoc.SelectedValue = (imovelVO.loc == null ? " " : (imovelVO.loc.Value ? "S" : "N"));
                if (imovelVO.vlrVda == null)
                    this.txtCadVlrVda.Text = null;
                else
                    this.txtCadVlrVda.Text = String.Format("{0:n2}", imovelVO.vlrVda.Value);
                if (imovelVO.vlrLoc == null)
                    this.txtCadVlrLoc.Text = null;
                else
                    this.txtCadVlrLoc.Text = String.Format("{0:n2}", imovelVO.vlrLoc.Value);
                this.rbCadDestaque.SelectedValue = Convert.ToString(imovelVO.destaque);
                this.ltCadastradoPor.Text = imovelVO.cadastradoPor;
                this.ltEditadoPor.Text = imovelVO.editadoPor;
                this.ltDataCadastro.Text = imovelVO.cadastro.ToString("dd/MM/yyyy");
                this.ltDataEdicao.Text = imovelVO.edicao.ToString("dd/MM/yyyy");

                //recupera Imovelxareacomum
                Util.LimparCampos(this.panelImovelxareacomum);
                Util.HabilitarCampos(false, this.panelImovelxareacomum);
                this.panelImovelxareacomum.Enabled = true;
                this.ltCadImovelxareacomumImovel.Text = imovelVO.ToString();
                this.ltImovelxareacomumCadastradoPor.Text = "";
                this.ltImovelxareacomumDataCadastro.Text = "";
                this.ltImovelxareacomumDataEdicao.Text = "";
                this.ltImovelxareacomumEditadoPor.Text = "";
                this.btnCadImovelxareacomumSalvar.Enabled = false;
                this.btnCadImovelxareacomumEditar.Enabled = false;
                this.btnCadImovelxareacomumExcluir.Enabled = false;
                this.btnCadImovelxareacomumNovo.Enabled = true;
                this.grvCadImovelxImovelxareacomum.DataSource = AlfDAO.getImovelxareacomums(null, null, imovelVO.idImovel, null);
                this.grvCadImovelxareacomumReadonly.DataSource = this.grvCadImovelxImovelxareacomum.DataSource;
                this.grvCadImovelxImovelxareacomum.DataBind();
                this.grvCadImovelxareacomumReadonly.DataBind();

                //recupera Imovelxcaracteristica
                Util.LimparCampos(this.panelImovelxcaracteristica);
                Util.HabilitarCampos(false, this.panelImovelxcaracteristica);
                this.panelImovelxcaracteristica.Enabled = true;
                this.ltCadImovelxcaracteristicaImovel.Text = imovelVO.ToString();
                this.ltImovelxcaracteristicaCadastradoPor.Text = "";
                this.ltImovelxcaracteristicaDataCadastro.Text = "";
                this.ltImovelxcaracteristicaDataEdicao.Text = "";
                this.ltImovelxcaracteristicaEditadoPor.Text = "";
                this.btnCadImovelxcaracteristicaSalvar.Enabled = false;
                this.btnCadImovelxcaracteristicaEditar.Enabled = false;
                this.btnCadImovelxcaracteristicaExcluir.Enabled = false;
                this.btnCadImovelxcaracteristicaNovo.Enabled = true;
                this.grvCadImovelxImovelxcaracteristica.DataSource = AlfDAO.getImovelxcaracteristicas(null, null, imovelVO.idImovel, null);
                this.grvCadImovelxcaracteristicaReadonly.DataSource = this.grvCadImovelxImovelxcaracteristica.DataSource;
                this.grvCadImovelxImovelxcaracteristica.DataBind();
                this.grvCadImovelxcaracteristicaReadonly.DataBind();

                //recupera Imovelxfoto
                Util.LimparCampos(this.panelImovelxfoto);
                Util.HabilitarCampos(false, this.panelImovelxfoto);
                this.panelImovelxfoto.Enabled = true;
                this.ltCadImovelxfotoImovel.Text = imovelVO.ToString();
                this.ltImovelxfotoCadastradoPor.Text = "";
                this.ltImovelxfotoDataCadastro.Text = "";
                this.ltImovelxfotoDataEdicao.Text = "";
                this.ltImovelxfotoEditadoPor.Text = "";
                this.btnCadImovelxfotoSalvar.Enabled = false;
                this.btnCadImovelxfotoEditar.Enabled = false;
                this.btnCadImovelxfotoExcluir.Enabled = false;
                this.btnCadImovelxfotoNovo.Enabled = true;
                this.btCadImovelxfotoFotoLargeRemover.Enabled = false;
                this.afuCadImovelxfotoFotoLargeUpload.Enabled = false;
                this.btCadImovelxfotoFotoLargeVisualizar.Enabled = false;
                this.grvCadImovelxImovelxfoto.DataSource = AlfDAO.getImovelxfotos(null, imovelVO.idImovel);
                this.grvCadImovelxImovelxfoto.DataBind();

                //Habilita tab page do cadastro
                this.tabImovel.ActiveTabIndex = 1;

                //Desabilita campos para edição
                Util.HabilitarCampos(false, this.panelCad);

                //Desabilita botão salvar
                this.btnSalvar.Enabled = false;

                //Habilita botão editar
                this.btnEditar.Enabled = true;

                //Habilita botão excluir
                this.btnExcluir.Enabled = true;

                //Habilita botão novo
                this.btnNovo.Enabled = true;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        protected void buscaTipoImovel(int idImovelCat)
        {
            ImovelcatVO icVO = AlfDAO.getImovelcat(idImovelCat);
            icVO.idImovelTipoVO = AlfDAO.getImoveltipo(icVO.idImovelTipo);

            this.ddlCadIdImovelTipo.SelectedValue = icVO.idImovelTipo.ToString();
            ddlCadIdImovelTipo_SelectedIndexChanged(null, null);
            this.ddlCadIdImovelCat.SelectedValue = icVO.idImovelCat.ToString();

        }
        protected void buscaLogradouro(int id)
        {
            LogradouroVO idLogradouro = AlfDAO.getLogradouro(id);
            idLogradouro.idBairroVO = AlfDAO.getBairro(idLogradouro.idBairro);
            idLogradouro.idBairroVO.idCidadeVO = AlfDAO.getCidade(idLogradouro.idBairroVO.idCidade);
            idLogradouro.idBairroVO.idCidadeVO.idEstadoVO = AlfDAO.getEstado(idLogradouro.idBairroVO.idCidadeVO.idEstado);


            ddlCadEstado.SelectedValue = Convert.ToString(idLogradouro.idBairroVO.idCidadeVO.idEstadoVO.idEstado);
            ddlCadEstado_SelectedIndexChanged(null, null);
            ddlCadCidade.SelectedValue = Convert.ToString(idLogradouro.idBairroVO.idCidadeVO.idCidade);
            ddlCadCidade_SelectedIndexChanged(null, null);
            ddlCadBairro.SelectedValue = Convert.ToString(idLogradouro.idBairroVO.idBairro);
            ddlCadBairro_SelectedIndexChanged(null, null);


            ddlCadIdTipoLog.SelectedValue = Convert.ToString(idLogradouro.idLogTipo);
            ddlCadIdTipoLog_SelectedIndexChanged(null, null);
            ddlCadIdLogradouro.SelectedValue = Convert.ToString(idLogradouro.idLogradouro);
            //txtCadCep.Text = idLogradouro.cep;

        }

        // <summary>
        // Manipula o evento editar do web form
        // </summary>
        // <param name="sender">Objeto disparador de evento</param>
        // <param name="e">Argumento do evento</param>
        protected void btnEditar_Click(object sender, EventArgs e)
        {
            // Habilita os campos para edição
            Util.HabilitarCampos(true, this.panelCad);
            //this.txtCadCep.Enabled = false;

            // Trava apenas os text box da PK
            this.txtCadIdImovel.Enabled = false;

            // Trava botão de edição
            this.btnEditar.Enabled = false;

            // Trava botão de exclusao
            this.btnExcluir.Enabled = false;

            // Trava botão de novo
            this.btnNovo.Enabled = false;

            // Habilita o botão salvar
            this.btnSalvar.Enabled = true;

            this.txtCadTitulo.Focus();
        }

        protected void btnNovo_Click(object sender, EventArgs e)
        {
            //Limpa formulario, para a entrada de novo registro
            Util.LimparCampos(this.panelCad);
            // Habilita os campos para edição
            Util.HabilitarCampos(true, this.panelCad);
            //this.txtCadCep.Enabled = false;

            this.ltCadastradoPor.Text = "";
            this.ltEditadoPor.Text = "";
            this.ltDataCadastro.Text = "";
            this.ltDataEdicao.Text = "";

            this.rbCadDestaque.SelectedValue = "N";

            // Limpa Imovelxareacomum
            Util.LimparCampos(this.panelImovelxareacomum);
            Util.HabilitarCampos(false, this.panelImovelxareacomum);
            this.ltCadImovelxareacomumImovel.Text = "";
            this.ltImovelxareacomumCadastradoPor.Text = "";
            this.ltImovelxareacomumDataCadastro.Text = "";
            this.ltImovelxareacomumDataEdicao.Text = "";
            this.ltImovelxareacomumEditadoPor.Text = "";
            this.grvCadImovelxImovelxareacomum.DataSource = null;
            this.grvCadImovelxareacomumReadonly.DataSource = this.grvCadImovelxImovelxareacomum.DataSource;
            this.grvCadImovelxImovelxareacomum.DataBind();
            this.grvCadImovelxareacomumReadonly.DataBind();
            this.panelImovelxareacomum.Enabled = false;
            this.btnCadImovelxareacomumSalvar.Enabled = false;
            this.btnCadImovelxareacomumEditar.Enabled = false;
            this.btnCadImovelxareacomumExcluir.Enabled = false;
            this.btnCadImovelxareacomumNovo.Enabled = false;

            ddlCadIdCliente_SelectedIndexChanged(null, null);
            ddlCadIdIndicador_SelectedIndexChanged(null, null);
            ddlCadIdPromotor_SelectedIndexChanged(null, null);

            // Limpa Imovelxcaracteristica
            Util.LimparCampos(this.panelImovelxcaracteristica);
            Util.HabilitarCampos(false, this.panelImovelxcaracteristica);
            this.ltCadImovelxcaracteristicaImovel.Text = "";
            this.ltImovelxcaracteristicaCadastradoPor.Text = "";
            this.ltImovelxcaracteristicaDataCadastro.Text = "";
            this.ltImovelxcaracteristicaDataEdicao.Text = "";
            this.ltImovelxcaracteristicaEditadoPor.Text = "";
            this.grvCadImovelxImovelxcaracteristica.DataSource = null;
            this.grvCadImovelxcaracteristicaReadonly.DataSource = this.grvCadImovelxImovelxcaracteristica.DataSource;
            this.grvCadImovelxImovelxcaracteristica.DataBind();
            this.grvCadImovelxcaracteristicaReadonly.DataBind();
            this.panelImovelxcaracteristica.Enabled = false;
            this.btnCadImovelxcaracteristicaSalvar.Enabled = false;
            this.btnCadImovelxcaracteristicaEditar.Enabled = false;
            this.btnCadImovelxcaracteristicaExcluir.Enabled = false;
            this.btnCadImovelxcaracteristicaNovo.Enabled = false;

            // Limpa Imovelxfoto
            Util.LimparCampos(this.panelImovelxfoto);
            Util.HabilitarCampos(false, this.panelImovelxfoto);
            this.ltCadImovelxfotoImovel.Text = "";
            this.ltImovelxfotoCadastradoPor.Text = "";
            this.ltImovelxfotoDataCadastro.Text = "";
            this.ltImovelxfotoDataEdicao.Text = "";
            this.ltImovelxfotoEditadoPor.Text = "";
            this.grvCadImovelxImovelxfoto.DataSource = null;
            this.grvCadImovelxImovelxfoto.DataBind();
            this.panelImovelxfoto.Enabled = false;
            this.btnCadImovelxfotoSalvar.Enabled = false;
            this.btnCadImovelxfotoEditar.Enabled = false;
            this.btnCadImovelxfotoExcluir.Enabled = false;
            this.btnCadImovelxfotoNovo.Enabled = false;
            this.btCadImovelxfotoFotoLargeRemover.Enabled = false;
            this.afuCadImovelxfotoFotoLargeUpload.Enabled = false;
            this.btCadImovelxfotoFotoLargeVisualizar.Enabled = false;

            // Trava apenas os text box da PK
            this.txtCadIdImovel.Enabled = false;

            // Trava botão de edição
            this.btnEditar.Enabled = false;

            // Trava botão de exclusao
            this.btnExcluir.Enabled = false;

            // Trava botão de novo
            this.btnNovo.Enabled = false;

            // Habilita o botão salvar
            this.btnSalvar.Enabled = true;

            this.txtCadTitulo.Focus();

            CarregaLogradouro();
        }

        protected void btnExcluir_Click(object sender, EventArgs e)
        {
            //Declara objetos
            ImovelVO imovelVO = null;

            try
            {
                //Cria objeto
                imovelVO = ImovelVO.CreateVO();
                imovelVO.idImovel = Int32.Parse(this.txtCadIdImovel.Text);

                // Remove Imovelxareacomum
                List<ImovelxareacomumVO> imovelxareacomumVOs = AlfDAO.getImovelxareacomums(null, null, imovelVO.idImovel, null);
                foreach (ImovelxareacomumVO imovelxareacomumVO in imovelxareacomumVOs)
                    AlfDAO.delImovelxareacomum(imovelxareacomumVO);

                // Remove Imovelxcaracteristica
                List<ImovelxcaracteristicaVO> imovelxcaracteristicaVOs = AlfDAO.getImovelxcaracteristicas(null, null, imovelVO.idImovel, null);
                foreach (ImovelxcaracteristicaVO imovelxcaracteristicaVO in imovelxcaracteristicaVOs)
                    AlfDAO.delImovelxcaracteristica(imovelxcaracteristicaVO);

                // Remove Imovelxfoto
                List<ImovelxfotoVO> imovelxfotoVOs = AlfDAO.getImovelxfotos(null, imovelVO.idImovel);
                foreach (ImovelxfotoVO imovelxfotoVO in imovelxfotoVOs)
                    AlfDAO.delImovelxfoto(imovelxfotoVO);

                //Chama metodo para excluir registro
                AlfDAO.delImovel(imovelVO);

                // Exibe msg de sucesso ao salvar registro
                Util.ExibeAlert(this, "Registro excluido com sucesso!");

                //Popula grid atualizado
                this.btnPesquisa_Click(null, null);

                //Limpa formulario, apos salvar os dados
                Util.LimparCampos(this.panelCad);
                //Limpa Imovelxareacomum
                Util.LimparCampos(this.panelImovelxareacomum);
                Util.HabilitarCampos(false, this.panelImovelxareacomum);
                this.panelImovelxareacomum.Enabled = false;
                this.ltCadImovelxareacomumImovel.Text = "";
                this.ltImovelxareacomumCadastradoPor.Text = "";
                this.ltImovelxareacomumDataCadastro.Text = "";
                this.ltImovelxareacomumDataEdicao.Text = "";
                this.ltImovelxareacomumEditadoPor.Text = "";
                this.grvCadImovelxImovelxareacomum.DataSource = null;
                this.grvCadImovelxareacomumReadonly.DataSource = this.grvCadImovelxImovelxareacomum.DataSource;
                this.grvCadImovelxImovelxareacomum.DataBind();
                this.grvCadImovelxareacomumReadonly.DataBind();
                this.btnCadImovelxareacomumSalvar.Enabled = false;
                this.btnCadImovelxareacomumEditar.Enabled = false;
                this.btnCadImovelxareacomumExcluir.Enabled = false;
                this.btnCadImovelxareacomumNovo.Enabled = false;

                ddlCadIdCliente_SelectedIndexChanged(null, null);
                ddlCadIdIndicador_SelectedIndexChanged(null, null);
                ddlCadIdPromotor_SelectedIndexChanged(null, null);

                //Limpa Imovelxcaracteristica
                Util.LimparCampos(this.panelImovelxcaracteristica);
                Util.HabilitarCampos(false, this.panelImovelxcaracteristica);
                this.panelImovelxcaracteristica.Enabled = false;
                this.ltCadImovelxcaracteristicaImovel.Text = "";
                this.ltImovelxcaracteristicaCadastradoPor.Text = "";
                this.ltImovelxcaracteristicaDataCadastro.Text = "";
                this.ltImovelxcaracteristicaDataEdicao.Text = "";
                this.ltImovelxcaracteristicaEditadoPor.Text = "";
                this.grvCadImovelxImovelxcaracteristica.DataSource = null;
                this.grvCadImovelxcaracteristicaReadonly.DataSource = this.grvCadImovelxImovelxcaracteristica.DataSource;
                this.grvCadImovelxImovelxcaracteristica.DataBind();
                this.grvCadImovelxcaracteristicaReadonly.DataBind();
                this.btnCadImovelxcaracteristicaSalvar.Enabled = false;
                this.btnCadImovelxcaracteristicaEditar.Enabled = false;
                this.btnCadImovelxcaracteristicaExcluir.Enabled = false;
                this.btnCadImovelxcaracteristicaNovo.Enabled = false;

                //Limpa Imovelxfoto
                Util.LimparCampos(this.panelImovelxfoto);
                Util.HabilitarCampos(false, this.panelImovelxfoto);
                this.panelImovelxfoto.Enabled = false;
                this.ltCadImovelxfotoImovel.Text = "";
                this.ltImovelxfotoCadastradoPor.Text = "";
                this.ltImovelxfotoDataCadastro.Text = "";
                this.ltImovelxfotoDataEdicao.Text = "";
                this.ltImovelxfotoEditadoPor.Text = "";
                this.grvCadImovelxImovelxfoto.DataSource = null;
                this.grvCadImovelxImovelxfoto.DataBind();
                this.btnCadImovelxfotoSalvar.Enabled = false;
                this.btnCadImovelxfotoEditar.Enabled = false;
                this.btnCadImovelxfotoExcluir.Enabled = false;
                this.btnCadImovelxfotoNovo.Enabled = false;
                this.btCadImovelxfotoFotoLargeRemover.Enabled = false;
                this.afuCadImovelxfotoFotoLargeUpload.Enabled = false;
                this.btCadImovelxfotoFotoLargeVisualizar.Enabled = false;

                this.ltCadastradoPor.Text = "";
                this.ltEditadoPor.Text = "";
                this.ltDataCadastro.Text = "";
                this.ltDataEdicao.Text = "";

                // Trava botão de edição
                this.btnEditar.Enabled = false;

                // Trava botão de exclusao
                this.btnExcluir.Enabled = false;

                // Desabilita o botão salvar
                this.btnSalvar.Enabled = false;

                // Habilita o botao novo
                this.btnNovo.Enabled = true;

            }
            catch (Exception ex)
            {

                throw ex;
            }

        }

        protected void ddlEstado_SelectedIndexChanged(object sender, EventArgs e)
        {
            List<CidadeVO> idCidadeVOs = new List<CidadeVO>();
            CidadeVO idCidadeVO = CidadeVO.CreateVO();
            idCidadeVO.idCidade = -1;
            idCidadeVO.cidade = "";
            idCidadeVOs.Add(idCidadeVO);
            if (!string.IsNullOrEmpty(ddlEstado.SelectedValue) && !ddlEstado.SelectedValue.Equals("-1"))
            {
                idCidadeVOs.AddRange(AlfDAO.getCidades(null, null, int.Parse(ddlEstado.SelectedValue)));
            }
            Util.CarregarCombo(this.ddlCidade, idCidadeVOs);

            ddlCidade_SelectedIndexChanged(null, null);
        }

        protected void ddlCidade_SelectedIndexChanged(object sender, EventArgs e)
        {
            List<BairroVO> idBairroVOs = new List<BairroVO>();
            BairroVO idBairroVO = BairroVO.CreateVO();
            idBairroVO.idBairro = -1;
            idBairroVO.bairro = "";
            idBairroVOs.Add(idBairroVO);
            if (!string.IsNullOrEmpty(ddlCidade.SelectedValue) && !ddlCidade.SelectedValue.Equals("-1"))
            {
                idBairroVOs.AddRange(AlfDAO.getBairros(null, null, int.Parse(ddlCidade.SelectedValue)));
            }
            Util.CarregarCombo(this.ddlBairro, idBairroVOs);
        }

        protected void ddlTipoImovel_SelectedIndexChanged(object sender, EventArgs e)
        {
            List<ImovelcatVO> idImovelCatVOs = new List<ImovelcatVO>();
            ImovelcatVO idImovelcatVO = ImovelcatVO.CreateVO();
            idImovelcatVO.idImovelCat = -1;
            idImovelcatVO.imovelCat = "";
            idImovelCatVOs.Add(idImovelcatVO);
            if (!string.IsNullOrEmpty(ddlTipoImovel.SelectedValue) && !ddlTipoImovel.SelectedValue.Equals("-1"))
            {
                idImovelCatVOs.AddRange(AlfDAO.getImovelcats(null, int.Parse(ddlTipoImovel.SelectedValue), null));
            }
            Util.CarregarCombo(this.ddlIdImovelCat, idImovelCatVOs);
        }

        protected void ddlCadIdImovelTipo_SelectedIndexChanged(object sender, EventArgs e)
        {
            atualizarDdlIdImovelCat(null, null);
        }

        #region Imagens
        protected void ibtPanelFotoClose_Click(object sender, EventArgs e)
        {
            this.PanelFoto.Visible = false;
        }

        #region Imagem FotoLarge
        protected void btCadImovelxfotoFotoLargeVisualizar_Click(object sender, EventArgs e)
        {
            ImovelxfotoVO imovelxfotoVO = AlfDAO.getImovelxfoto(Int32.Parse(this.txtCadImovelxfotoIdImovelxfoto.Text));
            this.ltCadImovelxfotoFotoLargeNome.Text = imovelxfotoVO.fotoLargeNome;
            this.ltCadImovelxfotoFotoLargeMime.Text = imovelxfotoVO.fotoLargeMime;

            this.imgPanelFoto.ImageUrl = "~/DownImovelxfotoFotoLarge.aspx?idImovelxfoto=" + imovelxfotoVO.idImovelxfoto.ToString() + "&controll=" + DateTime.Now.Ticks.ToString();
            this.lblPanelFoto.Text = this.ltCadImovelxfotoFotoLargeNome.Text + "( " + this.ltCadImovelxfotoFotoLargeMime.Text + " )";
            this.PanelFoto.Visible = true;
        }
        protected void ProcessafuCadImovelxfotoFotoLargeUpload(object sender, AjaxControlToolkit.AsyncFileUploadEventArgs e)
        {
            // upload da imagem
            if (afuCadImovelxfotoFotoLargeUpload.PostedFile.FileName.Length > 0)
            {
                ImovelxfotoVO imovelxfotoVO = ImovelxfotoVO.CreateVO();
                imovelxfotoVO.idImovelxfoto = Int32.Parse(this.txtCadImovelxfotoIdImovelxfoto.Text);
                imovelxfotoVO.fotoLargeMime = afuCadImovelxfotoFotoLargeUpload.PostedFile.ContentType;
                imovelxfotoVO.fotoLargeNome = afuCadImovelxfotoFotoLargeUpload.PostedFile.FileName;

                System.IO.Stream st = afuCadImovelxfotoFotoLargeUpload.PostedFile.InputStream;
                byte[] fb = new byte[st.Length];

                fb = afuCadImovelxfotoFotoLargeUpload.GetBytesFromStream(st);

                System.Drawing.Image img = Util.byteArrayToImage(fb);
                imovelxfotoVO.fotoLarge = Util.imageToByteArray(Util.MaxSize(img, 800, 600));
                img.Dispose();

                imovelxfotoVO.edicao = DateTime.Now;
                imovelxfotoVO.editadoPor = usuarioVO.user;
                AlfDAO.setImovelxfotoFotoLarge(imovelxfotoVO);


                //medium
                imovelxfotoVO.fotoMediumMime = imovelxfotoVO.fotoLargeMime;
                imovelxfotoVO.fotoMediumNome = imovelxfotoVO.fotoLargeNome;

                System.Drawing.Image imgMedium = Util.byteArrayToImage(fb);
                imovelxfotoVO.fotoMedium = Util.imageToByteArray(Util.MaxSize(imgMedium, 400, 300));
                imgMedium.Dispose();

                imovelxfotoVO.edicao = DateTime.Now;
                imovelxfotoVO.editadoPor = usuarioVO.user;
                AlfDAO.setImovelxfotoFotoMedium(imovelxfotoVO);


                //pequena
                imovelxfotoVO.fotoSmallMime = imovelxfotoVO.fotoLargeMime;
                imovelxfotoVO.fotoSmallNome = imovelxfotoVO.fotoLargeNome;

                System.Drawing.Image imgSmall = Util.byteArrayToImage(fb);
                imovelxfotoVO.fotoSmall = Util.imageToByteArray(Util.MaxSize(imgSmall, 60, 45));
                imgSmall.Dispose();

                imovelxfotoVO.edicao = DateTime.Now;
                imovelxfotoVO.editadoPor = usuarioVO.user;
                AlfDAO.setImovelxfotoFotoSmall(imovelxfotoVO);

            }

        }
        protected void btCadImovelxfotoFotoLargeRemover_Click(object sender, EventArgs e)
        {
            ImovelxfotoVO imovelxfotoVO = ImovelxfotoVO.CreateVO();
            imovelxfotoVO.idImovelxfoto = Int32.Parse(this.txtCadImovelxfotoIdImovelxfoto.Text);
            imovelxfotoVO.fotoLarge = null;
            imovelxfotoVO.fotoLargeMime = null;
            imovelxfotoVO.fotoLargeNome = null;
            AlfDAO.setImovelxfotoFotoLarge(imovelxfotoVO);
            this.ltCadImovelxfotoFotoLargeMime.Text = "";
            this.ltCadImovelxfotoFotoLargeNome.Text = "";

            // Exibe msg de sucesso ao salvar registro
            Util.ExibeAlert(this, "Imagem removida!");
        }

        #endregion


        #endregion
        #region ImovelXImovelxareacomum

        protected void grvCadImovelxImovelxareacomum_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                ImovelxareacomumVO iacVO = AlfDAO.getImovelxareacomum(int.Parse(((HiddenField)e.Row.FindControl("hfIdImovelAreaComum")).Value));
                Label lblAreaComum = (Label)e.Row.FindControl("lblAreaComumDesc");
                lblAreaComum.Text = AlfDAO.getAreacomum(iacVO.idAreaComum).areaComum;

                Label lblObs = (Label)e.Row.FindControl("lblAreaComumObs");
                lblObs.Text = iacVO.obs;
            }
        }

        protected void grvCadImovelxareacomumReadonly_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                ImovelxareacomumVO iacVO = AlfDAO.getImovelxareacomum(int.Parse(((HiddenField)e.Row.FindControl("hfIdImovelAreaComum")).Value));
                Label lblAreaComum = (Label)e.Row.FindControl("lblAreaComumDesc");
                lblAreaComum.Text = AlfDAO.getAreacomum(iacVO.idAreaComum).areaComum;

                Label lblObs = (Label)e.Row.FindControl("lblAreaComumObs");
                lblObs.Text = iacVO.obs;
            }
        }

        protected void btnCadImovelxareacomumSalvar_Click(object sender, EventArgs e)
        {

            //Declara objetos
            ImovelxareacomumVO imovelxareacomumVO = null;
            bool novoRegistro = false;

            try
            {
                //Verifica se o ID é nulo, se sim = cadastro novo
                if (string.IsNullOrEmpty(this.txtCadImovelxareacomumImovelxareacomum.Text))
                {
                    imovelxareacomumVO = ImovelxareacomumVO.CreateVO();
                    imovelxareacomumVO.cadastro = DateTime.Now;
                    imovelxareacomumVO.cadastradoPor = usuarioVO.user;

                    novoRegistro = true;

                }
                //Recupera dados para serem alterados
                else
                {
                    //Recupera dados
                    imovelxareacomumVO = AlfDAO.getImovelxareacomum(Int32.Parse(this.txtCadImovelxareacomumImovelxareacomum.Text));
                }

                imovelxareacomumVO.idImovel = Int32.Parse(this.txtCadIdImovel.Text);
                imovelxareacomumVO.idAreaComum = Int32.Parse(this.ddlCadImovelxareacomumIdAreaComum.SelectedValue);
                if (string.IsNullOrEmpty(this.txtCadImovelxareacomumObs.Text))
                    imovelxareacomumVO.obs = null;
                else
                    imovelxareacomumVO.obs = this.txtCadImovelxareacomumObs.Text;
                imovelxareacomumVO.edicao = DateTime.Now;
                imovelxareacomumVO.editadoPor = usuarioVO.user;

                //Chama metodo para salvar ou criar novo registro
                if (novoRegistro)
                    imovelxareacomumVO.imovelxareacomum = (int)AlfDAO.newImovelxareacomum(imovelxareacomumVO);
                else
                    AlfDAO.setImovelxareacomum(imovelxareacomumVO);

                // Exibe msg de sucesso ao salvar registro
                Util.ExibeAlert(this, "Registro salvo com sucesso!");

                //Popula grid atualizado
                this.btnPesquisa_Click(null, null);

                //Atualiza formulario, apos salvar os dados
                this.txtCadImovelxareacomumImovelxareacomum.Text = imovelxareacomumVO.imovelxareacomum.ToString();
                this.ltImovelxareacomumCadastradoPor.Text = imovelxareacomumVO.cadastradoPor;
                this.ltImovelxareacomumEditadoPor.Text = imovelxareacomumVO.editadoPor;
                this.ltImovelxareacomumDataCadastro.Text = imovelxareacomumVO.cadastro.ToString("dd/MM/yyyy");
                this.ltImovelxareacomumDataEdicao.Text = imovelxareacomumVO.edicao.ToString("dd/MM/yyyy");

                this.grvCadImovelxImovelxareacomum.DataSource = AlfDAO.getImovelxareacomums(null, null, Int32.Parse(this.txtCadIdImovel.Text), null);
                this.grvCadImovelxareacomumReadonly.DataSource = this.grvCadImovelxImovelxareacomum.DataSource;
                this.grvCadImovelxImovelxareacomum.DataBind();
                this.grvCadImovelxareacomumReadonly.DataBind();
            }
            catch (Exception ex)
            {

                throw ex;
            }
        }

        protected void btnCadImovelxareacomumCancelar_Click(object sender, EventArgs e)
        {
            //Volta para a tab page de pesquisa
            //this.tabImovel.ActiveTabIndex = 0;

            // Desabilita os campos para edição
            Util.HabilitarCampos(false, this.panelImovelxareacomum);

            // Destrava botão de edição
            this.btnCadImovelxareacomumEditar.Enabled = (!string.IsNullOrEmpty(this.txtCadImovelxareacomumImovelxareacomum.Text));

            // Destrava botão de exclusao
            this.btnCadImovelxareacomumExcluir.Enabled = (!string.IsNullOrEmpty(this.txtCadImovelxareacomumImovelxareacomum.Text));

            // Detrava botão de novo
            this.btnCadImovelxareacomumNovo.Enabled = true;

            // Desabilita o botão salvar
            this.btnCadImovelxareacomumSalvar.Enabled = false;

        }

        protected void btnCadImovelxareacomumEditar_Click(object sender, EventArgs e)
        {
            // Habilita os campos para edição
            Util.HabilitarCampos(true, this.panelImovelxareacomum);

            // Trava apenas os text box da PK
            this.txtCadImovelxareacomumImovelxareacomum.Enabled = false;

            // Trava botão de edição
            this.btnCadImovelxareacomumEditar.Enabled = false;

            // Trava botão de exclusao
            this.btnCadImovelxareacomumExcluir.Enabled = false;

            // Trava botão de novo
            this.btnCadImovelxareacomumNovo.Enabled = false;

            // Habilita o botão salvar
            this.btnCadImovelxareacomumSalvar.Enabled = true;

            this.txtCadImovelxareacomumObs.Focus();
        }

        protected void btnCadImovelxareacomumExcluir_Click(object sender, EventArgs e)
        {
            //Declara objetos
            ImovelxareacomumVO imovelxareacomumVO = null;

            try
            {
                //Cria objeto
                imovelxareacomumVO = ImovelxareacomumVO.CreateVO();
                imovelxareacomumVO.imovelxareacomum = Int32.Parse(this.txtCadImovelxareacomumImovelxareacomum.Text);

                //Chama metodo para excluir registro
                AlfDAO.delImovelxareacomum(imovelxareacomumVO);

                // Exibe msg de sucesso ao salvar registro
                Util.ExibeAlert(this, "Registro excluido com sucesso!");

                //Limpa formulario, apos salvar os dados
                Util.LimparCampos(this.panelImovelxareacomum);
                Util.HabilitarCampos(false, this.panelImovelxareacomum);
                this.grvCadImovelxImovelxareacomum.DataSource = AlfDAO.getImovelxareacomums(null, null, Int32.Parse(this.txtCadIdImovel.Text), null);
                this.grvCadImovelxareacomumReadonly.DataSource = this.grvCadImovelxImovelxareacomum.DataSource;
                this.grvCadImovelxImovelxareacomum.DataBind();
                this.grvCadImovelxareacomumReadonly.DataBind();

                this.ltImovelxareacomumCadastradoPor.Text = "";
                this.ltImovelxareacomumEditadoPor.Text = "";
                this.ltImovelxareacomumDataCadastro.Text = "";
                this.ltImovelxareacomumDataEdicao.Text = "";

                // Trava botão de edição
                this.btnCadImovelxareacomumEditar.Enabled = false;

                // Trava botão de exclusao
                this.btnCadImovelxareacomumExcluir.Enabled = false;

                // Desabilita o botão salvar
                this.btnCadImovelxareacomumSalvar.Enabled = false;

                // Habilita o botao novo
                this.btnCadImovelxareacomumNovo.Enabled = true;

            }
            catch (Exception ex)
            {

                throw ex;
            }

        }
        protected void btnCadImovelxareacomumNovo_Click(object sender, EventArgs e)
        {
            //Limpa formulario, para a entrada de novo registro
            Util.LimparCampos(this.panelImovelxareacomum);
            // Habilita os campos para edição
            Util.HabilitarCampos(true, this.panelImovelxareacomum);

            this.ltImovelxareacomumCadastradoPor.Text = "";
            this.ltImovelxareacomumEditadoPor.Text = "";
            this.ltImovelxareacomumDataCadastro.Text = "";
            this.ltImovelxareacomumDataEdicao.Text = "";

            // Trava apenas os text box da PK
            this.txtCadImovelxareacomumImovelxareacomum.Enabled = false;

            // Trava botão de edição
            this.btnCadImovelxareacomumEditar.Enabled = false;

            // Trava botão de exclusao
            this.btnCadImovelxareacomumExcluir.Enabled = false;

            // Trava botão de novo
            this.btnCadImovelxareacomumNovo.Enabled = false;

            // Habilita o botão salvar
            this.btnCadImovelxareacomumSalvar.Enabled = true;

            this.txtCadImovelxareacomumObs.Focus();

        }

        protected void imgbCadImovelxareacomumVisualizar_Click(object sender, ImageClickEventArgs e)
        {
            // Declara objetos
            ImovelxareacomumVO imovelxareacomumVO = null;
            int imovelxareacomum = 0;

            try
            {
                //Recupera os argumentos com o ID do objeto
                string[] argumentos = ((ImageButton)sender).CommandArgument.Split(';');
                imovelxareacomum = Int32.Parse(argumentos[0]);

                //Recupera o objeto
                imovelxareacomumVO = AlfDAO.getImovelxareacomum(imovelxareacomum);

                this.ddlCadImovelxareacomumIdAreaComum.SelectedValue = imovelxareacomumVO.idAreaComum.ToString();
                this.txtCadImovelxareacomumObs.Text = imovelxareacomumVO.obs;
                this.txtCadImovelxareacomumImovelxareacomum.Text = imovelxareacomumVO.imovelxareacomum.ToString();
                this.ltImovelxareacomumCadastradoPor.Text = imovelxareacomumVO.cadastradoPor;
                this.ltImovelxareacomumEditadoPor.Text = imovelxareacomumVO.editadoPor;
                this.ltImovelxareacomumDataCadastro.Text = imovelxareacomumVO.cadastro.ToString("dd/MM/yyyy");
                this.ltImovelxareacomumDataEdicao.Text = imovelxareacomumVO.edicao.ToString("dd/MM/yyyy");

                //Desabilita campos para edição
                Util.HabilitarCampos(false, this.panelImovelxareacomum);

                //Desabilita botão salvar
                this.btnCadImovelxareacomumSalvar.Enabled = false;

                //Habilita botão editar
                this.btnCadImovelxareacomumEditar.Enabled = true;

                //Habilita botão excluir
                this.btnCadImovelxareacomumExcluir.Enabled = true;

                //Habilita botão novo
                this.btnCadImovelxareacomumNovo.Enabled = true;

            }
            catch (Exception ex)
            {

                throw ex;
            }
        }

        #endregion
        #region ImovelXImovelxcaracteristica

        protected void grvCadImovelxImovelxcaracteristica_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                ImovelxcaracteristicaVO iccVO = AlfDAO.getImovelxcaracteristica(int.Parse(((HiddenField)e.Row.FindControl("hfIdCaracteristicas")).Value));
                Label lblAreaComum = (Label)e.Row.FindControl("lblCaracteristicasDesc");
                lblAreaComum.Text = AlfDAO.getCaracteristica(iccVO.idCaracteristica).caracteristica;

                Label lblObs = (Label)e.Row.FindControl("lblCaracteristicasObs");
                lblObs.Text = iccVO.obs;
            }
        }

        protected void grvCadImovelxcaracteristicaReadonly_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                ImovelxcaracteristicaVO iccVO = AlfDAO.getImovelxcaracteristica(int.Parse(((HiddenField)e.Row.FindControl("hfIdCaracteristicas")).Value));
                Label lblAreaComum = (Label)e.Row.FindControl("lblCaracteristicasDesc");
                lblAreaComum.Text = AlfDAO.getCaracteristica(iccVO.idCaracteristica).caracteristica;

                Label lblObs = (Label)e.Row.FindControl("lblCaracteristicasObs");
                lblObs.Text = iccVO.obs;
            }
        }


        protected void btnCadImovelxcaracteristicaSalvar_Click(object sender, EventArgs e)
        {

            //Declara objetos
            ImovelxcaracteristicaVO imovelxcaracteristicaVO = null;
            bool novoRegistro = false;

            try
            {
                //Verifica se o ID é nulo, se sim = cadastro novo
                if (string.IsNullOrEmpty(this.txtCadImovelxcaracteristicaIdImovelXCaracteristica.Text))
                {
                    imovelxcaracteristicaVO = ImovelxcaracteristicaVO.CreateVO();
                    imovelxcaracteristicaVO.cadastro = DateTime.Now;
                    imovelxcaracteristicaVO.cadastradoPor = usuarioVO.user;

                    novoRegistro = true;

                }
                //Recupera dados para serem alterados
                else
                {
                    //Recupera dados
                    imovelxcaracteristicaVO = AlfDAO.getImovelxcaracteristica(Int32.Parse(this.txtCadImovelxcaracteristicaIdImovelXCaracteristica.Text));
                }

                imovelxcaracteristicaVO.idImovel = Int32.Parse(this.txtCadIdImovel.Text);
                imovelxcaracteristicaVO.idCaracteristica = Int32.Parse(this.ddlCadImovelxcaracteristicaIdCaracteristica.SelectedValue);
                if (string.IsNullOrEmpty(this.txtCadImovelxcaracteristicaObs.Text))
                    imovelxcaracteristicaVO.obs = null;
                else
                    imovelxcaracteristicaVO.obs = this.txtCadImovelxcaracteristicaObs.Text;
                imovelxcaracteristicaVO.edicao = DateTime.Now;
                imovelxcaracteristicaVO.editadoPor = usuarioVO.user;

                //Chama metodo para salvar ou criar novo registro
                if (novoRegistro)
                    imovelxcaracteristicaVO.idImovelXCaracteristica = (int)AlfDAO.newImovelxcaracteristica(imovelxcaracteristicaVO);
                else
                    AlfDAO.setImovelxcaracteristica(imovelxcaracteristicaVO);

                // Exibe msg de sucesso ao salvar registro
                Util.ExibeAlert(this, "Registro salvo com sucesso!");

                //Popula grid atualizado
                this.btnPesquisa_Click(null, null);

                //Atualiza formulario, apos salvar os dados
                this.txtCadImovelxcaracteristicaIdImovelXCaracteristica.Text = imovelxcaracteristicaVO.idImovelXCaracteristica.ToString();
                this.ltImovelxcaracteristicaCadastradoPor.Text = imovelxcaracteristicaVO.cadastradoPor;
                this.ltImovelxcaracteristicaEditadoPor.Text = imovelxcaracteristicaVO.editadoPor;
                this.ltImovelxcaracteristicaDataCadastro.Text = imovelxcaracteristicaVO.cadastro.ToString("dd/MM/yyyy");
                this.ltImovelxcaracteristicaDataEdicao.Text = imovelxcaracteristicaVO.edicao.ToString("dd/MM/yyyy");

                this.grvCadImovelxImovelxcaracteristica.DataSource = AlfDAO.getImovelxcaracteristicas(null, null, Int32.Parse(this.txtCadIdImovel.Text), null);
                this.grvCadImovelxImovelxcaracteristica.DataBind();

            }
            catch (Exception ex)
            {

                throw ex;
            }
        }

        protected void btnCadImovelxcaracteristicaCancelar_Click(object sender, EventArgs e)
        {
            //Volta para a tab page de pesquisa
            //this.tabImovel.ActiveTabIndex = 0;

            // Desabilita os campos para edição
            Util.HabilitarCampos(false, this.panelImovelxcaracteristica);

            // Destrava botão de edição
            this.btnCadImovelxcaracteristicaEditar.Enabled = (!string.IsNullOrEmpty(this.txtCadImovelxcaracteristicaIdImovelXCaracteristica.Text));

            // Destrava botão de exclusao
            this.btnCadImovelxcaracteristicaExcluir.Enabled = (!string.IsNullOrEmpty(this.txtCadImovelxcaracteristicaIdImovelXCaracteristica.Text));

            // Detrava botão de novo
            this.btnCadImovelxcaracteristicaNovo.Enabled = true;

            // Desabilita o botão salvar
            this.btnCadImovelxcaracteristicaSalvar.Enabled = false;

        }

        protected void btnCadImovelxcaracteristicaEditar_Click(object sender, EventArgs e)
        {
            // Habilita os campos para edição
            Util.HabilitarCampos(true, this.panelImovelxcaracteristica);

            // Trava apenas os text box da PK
            this.txtCadImovelxcaracteristicaIdImovelXCaracteristica.Enabled = false;

            // Trava botão de edição
            this.btnCadImovelxcaracteristicaEditar.Enabled = false;

            // Trava botão de exclusao
            this.btnCadImovelxcaracteristicaExcluir.Enabled = false;

            // Trava botão de novo
            this.btnCadImovelxcaracteristicaNovo.Enabled = false;

            // Habilita o botão salvar
            this.btnCadImovelxcaracteristicaSalvar.Enabled = true;

            this.txtCadImovelxcaracteristicaObs.Focus();
        }

        protected void btnCadImovelxcaracteristicaExcluir_Click(object sender, EventArgs e)
        {
            //Declara objetos
            ImovelxcaracteristicaVO imovelxcaracteristicaVO = null;

            try
            {
                //Cria objeto
                imovelxcaracteristicaVO = ImovelxcaracteristicaVO.CreateVO();
                imovelxcaracteristicaVO.idImovelXCaracteristica = Int32.Parse(this.txtCadImovelxcaracteristicaIdImovelXCaracteristica.Text);

                //Chama metodo para excluir registro
                AlfDAO.delImovelxcaracteristica(imovelxcaracteristicaVO);

                // Exibe msg de sucesso ao salvar registro
                Util.ExibeAlert(this, "Registro excluido com sucesso!");

                //Limpa formulario, apos salvar os dados
                Util.LimparCampos(this.panelImovelxcaracteristica);
                Util.HabilitarCampos(false, this.panelImovelxcaracteristica);
                this.grvCadImovelxImovelxcaracteristica.DataSource = AlfDAO.getImovelxcaracteristicas(null, null, Int32.Parse(this.txtCadIdImovel.Text), null);
                this.grvCadImovelxImovelxcaracteristica.DataBind();

                this.ltImovelxcaracteristicaCadastradoPor.Text = "";
                this.ltImovelxcaracteristicaEditadoPor.Text = "";
                this.ltImovelxcaracteristicaDataCadastro.Text = "";
                this.ltImovelxcaracteristicaDataEdicao.Text = "";

                // Trava botão de edição
                this.btnCadImovelxcaracteristicaEditar.Enabled = false;

                // Trava botão de exclusao
                this.btnCadImovelxcaracteristicaExcluir.Enabled = false;

                // Desabilita o botão salvar
                this.btnCadImovelxcaracteristicaSalvar.Enabled = false;

                // Habilita o botao novo
                this.btnCadImovelxcaracteristicaNovo.Enabled = true;

            }
            catch (Exception ex)
            {

                throw ex;
            }

        }
        protected void btnCadImovelxcaracteristicaNovo_Click(object sender, EventArgs e)
        {
            //Limpa formulario, para a entrada de novo registro
            Util.LimparCampos(this.panelImovelxcaracteristica);
            // Habilita os campos para edição
            Util.HabilitarCampos(true, this.panelImovelxcaracteristica);

            this.ltImovelxcaracteristicaCadastradoPor.Text = "";
            this.ltImovelxcaracteristicaEditadoPor.Text = "";
            this.ltImovelxcaracteristicaDataCadastro.Text = "";
            this.ltImovelxcaracteristicaDataEdicao.Text = "";

            // Trava apenas os text box da PK
            this.txtCadImovelxcaracteristicaIdImovelXCaracteristica.Enabled = false;

            // Trava botão de edição
            this.btnCadImovelxcaracteristicaEditar.Enabled = false;

            // Trava botão de exclusao
            this.btnCadImovelxcaracteristicaExcluir.Enabled = false;

            // Trava botão de novo
            this.btnCadImovelxcaracteristicaNovo.Enabled = false;

            // Habilita o botão salvar
            this.btnCadImovelxcaracteristicaSalvar.Enabled = true;

            this.txtCadImovelxcaracteristicaObs.Focus();

        }

        protected void imgbCadImovelxcaracteristicaVisualizar_Click(object sender, ImageClickEventArgs e)
        {
            // Declara objetos
            ImovelxcaracteristicaVO imovelxcaracteristicaVO = null;
            int idImovelXCaracteristica = 0;

            try
            {
                //Recupera os argumentos com o ID do objeto
                string[] argumentos = ((ImageButton)sender).CommandArgument.Split(';');
                idImovelXCaracteristica = Int32.Parse(argumentos[0]);

                //Recupera o objeto
                imovelxcaracteristicaVO = AlfDAO.getImovelxcaracteristica(idImovelXCaracteristica);

                this.ddlCadImovelxcaracteristicaIdCaracteristica.SelectedValue = imovelxcaracteristicaVO.idCaracteristica.ToString();
                this.txtCadImovelxcaracteristicaObs.Text = imovelxcaracteristicaVO.obs;
                this.txtCadImovelxcaracteristicaIdImovelXCaracteristica.Text = imovelxcaracteristicaVO.idImovelXCaracteristica.ToString();
                this.ltImovelxcaracteristicaCadastradoPor.Text = imovelxcaracteristicaVO.cadastradoPor;
                this.ltImovelxcaracteristicaEditadoPor.Text = imovelxcaracteristicaVO.editadoPor;
                this.ltImovelxcaracteristicaDataCadastro.Text = imovelxcaracteristicaVO.cadastro.ToString("dd/MM/yyyy");
                this.ltImovelxcaracteristicaDataEdicao.Text = imovelxcaracteristicaVO.edicao.ToString("dd/MM/yyyy");

                //Desabilita campos para edição
                Util.HabilitarCampos(false, this.panelImovelxcaracteristica);

                //Desabilita botão salvar
                this.btnCadImovelxcaracteristicaSalvar.Enabled = false;

                //Habilita botão editar
                this.btnCadImovelxcaracteristicaEditar.Enabled = true;

                //Habilita botão excluir
                this.btnCadImovelxcaracteristicaExcluir.Enabled = true;

                //Habilita botão novo
                this.btnCadImovelxcaracteristicaNovo.Enabled = true;

            }
            catch (Exception ex)
            {

                throw ex;
            }
        }

        #endregion
        #region ImovelXImovelxfoto
        protected void btnCadImovelxfotoSalvar_Click(object sender, EventArgs e)
        {

            //Declara objetos
            ImovelxfotoVO imovelxfotoVO = null;
            bool novoRegistro = false;

            try
            {
                //Verifica se o ID é nulo, se sim = cadastro novo
                if (string.IsNullOrEmpty(this.txtCadImovelxfotoIdImovelxfoto.Text))
                {
                    imovelxfotoVO = ImovelxfotoVO.CreateVO();
                    imovelxfotoVO.cadastro = DateTime.Now;
                    imovelxfotoVO.cadastradoPor = usuarioVO.user;

                    novoRegistro = true;

                }
                //Recupera dados para serem alterados
                else
                {
                    //Recupera dados
                    imovelxfotoVO = AlfDAO.getImovelxfoto(Int32.Parse(this.txtCadImovelxfotoIdImovelxfoto.Text));
                }

                imovelxfotoVO.idImovel = Int32.Parse(this.txtCadIdImovel.Text);
                imovelxfotoVO.edicao = DateTime.Now;
                imovelxfotoVO.editadoPor = usuarioVO.user;

                //Chama metodo para salvar ou criar novo registro
                if (novoRegistro)
                    imovelxfotoVO.idImovelxfoto = (int)AlfDAO.newImovelxfoto(imovelxfotoVO);
                else
                    AlfDAO.setImovelxfoto(imovelxfotoVO);

                // Exibe msg de sucesso ao salvar registro
                Util.ExibeAlert(this, "Registro salvo com sucesso!");

                //Popula grid atualizado
                this.btnPesquisa_Click(null, null);

                //Atualiza formulario, apos salvar os dados
                this.txtCadImovelxfotoIdImovelxfoto.Text = imovelxfotoVO.idImovelxfoto.ToString();
                this.ltCadImovelxfotoFotoLargeNome.Text = imovelxfotoVO.fotoLargeNome;
                this.ltCadImovelxfotoFotoLargeMime.Text = imovelxfotoVO.fotoLargeMime;

                this.ltImovelxfotoCadastradoPor.Text = imovelxfotoVO.cadastradoPor;
                this.ltImovelxfotoEditadoPor.Text = imovelxfotoVO.editadoPor;
                this.ltImovelxfotoDataCadastro.Text = imovelxfotoVO.cadastro.ToString("dd/MM/yyyy");
                this.ltImovelxfotoDataEdicao.Text = imovelxfotoVO.edicao.ToString("dd/MM/yyyy");

                //Habilita botoes da imagem fotoLarge
                this.btCadImovelxfotoFotoLargeRemover.Enabled = true;
                this.afuCadImovelxfotoFotoLargeUpload.Enabled = true;
                this.btCadImovelxfotoFotoLargeVisualizar.Enabled = true;
                this.grvCadImovelxImovelxfoto.DataSource = AlfDAO.getImovelxfotos(null, int.Parse(txtCadIdImovel.Text));
                this.grvCadImovelxImovelxfoto.DataBind();

            }
            catch (Exception ex)
            {

                throw ex;
            }
        }

        protected void btnCadImovelxfotoCancelar_Click(object sender, EventArgs e)
        {
            //Volta para a tab page de pesquisa
            //this.tabImovel.ActiveTabIndex = 0;

            // Desabilita os campos para edição
            Util.HabilitarCampos(false, this.panelImovelxfoto);

            // Destrava botão de edição
            this.btnCadImovelxfotoEditar.Enabled = (!string.IsNullOrEmpty(this.txtCadImovelxfotoIdImovelxfoto.Text));

            // Destrava botão de exclusao
            this.btnCadImovelxfotoExcluir.Enabled = (!string.IsNullOrEmpty(this.txtCadImovelxfotoIdImovelxfoto.Text));

            // Detrava botão de novo
            this.btnCadImovelxfotoNovo.Enabled = true;

            // Desabilita o botão salvar
            this.btnCadImovelxfotoSalvar.Enabled = false;

            // Desabilita botões da imagem fotoLarge
            this.btCadImovelxfotoFotoLargeRemover.Enabled = false;
            this.afuCadImovelxfotoFotoLargeUpload.Enabled = false;
            this.btCadImovelxfotoFotoLargeVisualizar.Enabled = (!string.IsNullOrEmpty(this.ltCadImovelxfotoFotoLargeNome.Text));

        }

        protected void btnCadImovelxfotoEditar_Click(object sender, EventArgs e)
        {
            // Habilita os campos para edição
            Util.HabilitarCampos(true, this.panelImovelxfoto);

            // Trava apenas os text box da PK
            this.txtCadImovelxfotoIdImovelxfoto.Enabled = false;

            // Trava botão de edição
            this.btnCadImovelxfotoEditar.Enabled = false;

            // Trava botão de exclusao
            this.btnCadImovelxfotoExcluir.Enabled = false;

            // Trava botão de novo
            this.btnCadImovelxfotoNovo.Enabled = false;

            // Habilita o botão salvar
            this.btnCadImovelxfotoSalvar.Enabled = true;

            // Habilita botões da imagem fotoLarge
            this.btCadImovelxfotoFotoLargeRemover.Enabled = true;
            this.afuCadImovelxfotoFotoLargeUpload.Enabled = true;
            this.btCadImovelxfotoFotoLargeVisualizar.Enabled = true;
        }

        protected void btnCadImovelxfotoExcluir_Click(object sender, EventArgs e)
        {
            //Declara objetos
            ImovelxfotoVO imovelxfotoVO = null;

            try
            {
                //Cria objeto
                imovelxfotoVO = ImovelxfotoVO.CreateVO();
                imovelxfotoVO.idImovelxfoto = Int32.Parse(this.txtCadImovelxfotoIdImovelxfoto.Text);

                //Chama metodo para excluir registro
                AlfDAO.delImovelxfoto(imovelxfotoVO);

                // Exibe msg de sucesso ao salvar registro
                Util.ExibeAlert(this, "Registro excluido com sucesso!");

                //Limpa formulario, apos salvar os dados
                Util.LimparCampos(this.panelImovelxfoto);
                Util.HabilitarCampos(false, this.panelImovelxfoto);
                this.ltCadImovelxfotoFotoLargeNome.Text = "";
                this.ltCadImovelxfotoFotoLargeMime.Text = "";
                this.grvCadImovelxImovelxfoto.DataSource = AlfDAO.getImovelxfotos(null, int.Parse(txtCadIdImovel.Text));
                this.grvCadImovelxImovelxfoto.DataBind();

                this.ltImovelxfotoCadastradoPor.Text = "";
                this.ltImovelxfotoEditadoPor.Text = "";
                this.ltImovelxfotoDataCadastro.Text = "";
                this.ltImovelxfotoDataEdicao.Text = "";

                // Trava botão de edição
                this.btnCadImovelxfotoEditar.Enabled = false;

                // Trava botão de exclusao
                this.btnCadImovelxfotoExcluir.Enabled = false;

                // Desabilita o botão salvar
                this.btnCadImovelxfotoSalvar.Enabled = false;

                // Habilita o botao novo
                this.btnCadImovelxfotoNovo.Enabled = true;

                // Desabilita botões da imagem fotoLarge
                this.btCadImovelxfotoFotoLargeRemover.Enabled = false;
                this.afuCadImovelxfotoFotoLargeUpload.Enabled = false;
                this.btCadImovelxfotoFotoLargeVisualizar.Enabled = false;
            }
            catch (Exception ex)
            {
                throw ex;
            }

        }
        protected void btnCadImovelxfotoNovo_Click(object sender, EventArgs e)
        {
            //Limpa formulario, para a entrada de novo registro
            Util.LimparCampos(this.panelImovelxfoto);
            // Habilita os campos para edição
            Util.HabilitarCampos(true, this.panelImovelxfoto);

            this.ltCadImovelxfotoFotoLargeNome.Text = "";
            this.ltCadImovelxfotoFotoLargeMime.Text = "";
            this.ltImovelxfotoCadastradoPor.Text = "";
            this.ltImovelxfotoEditadoPor.Text = "";
            this.ltImovelxfotoDataCadastro.Text = "";
            this.ltImovelxfotoDataEdicao.Text = "";

            // Trava apenas os text box da PK
            this.txtCadImovelxfotoIdImovelxfoto.Enabled = false;

            // Trava botão de edição
            this.btnCadImovelxfotoEditar.Enabled = false;

            // Trava botão de exclusao
            this.btnCadImovelxfotoExcluir.Enabled = false;

            // Trava botão de novo
            this.btnCadImovelxfotoNovo.Enabled = false;

            // Habilita o botão salvar
            this.btnCadImovelxfotoSalvar.Enabled = true;

            // Desabilita botões da imagem fotoLarge
            this.btCadImovelxfotoFotoLargeRemover.Enabled = false;
            this.afuCadImovelxfotoFotoLargeUpload.Enabled = false;
            this.btCadImovelxfotoFotoLargeVisualizar.Enabled = false;

            btnCadImovelxfotoSalvar_Click(null, null);
        }

        protected void imgbCadImovelxfotoVisualizar_Click(object sender, ImageClickEventArgs e)
        {
            // Declara objetos
            ImovelxfotoVO imovelxfotoVO = null;
            int idImovelxfoto = 0;

            try
            {
                //Recupera os argumentos com o ID do objeto
                string[] argumentos = ((ImageButton)sender).CommandArgument.Split(';');
                idImovelxfoto = Int32.Parse(argumentos[0]);

                //Recupera o objeto
                imovelxfotoVO = AlfDAO.getImovelxfoto(idImovelxfoto);

                this.txtCadImovelxfotoIdImovelxfoto.Text = imovelxfotoVO.idImovelxfoto.ToString();
                this.ltCadImovelxfotoFotoLargeNome.Text = imovelxfotoVO.fotoLargeNome;
                this.ltCadImovelxfotoFotoLargeMime.Text = imovelxfotoVO.fotoLargeMime;
                this.ltImovelxfotoCadastradoPor.Text = imovelxfotoVO.cadastradoPor;
                this.ltImovelxfotoEditadoPor.Text = imovelxfotoVO.editadoPor;
                this.ltImovelxfotoDataCadastro.Text = imovelxfotoVO.cadastro.ToString("dd/MM/yyyy");
                this.ltImovelxfotoDataEdicao.Text = imovelxfotoVO.edicao.ToString("dd/MM/yyyy");

                //Desabilita campos para edição
                Util.HabilitarCampos(false, this.panelImovelxfoto);

                //Desabilita botão salvar
                this.btnCadImovelxfotoSalvar.Enabled = false;

                //Habilita botão editar
                this.btnCadImovelxfotoEditar.Enabled = true;

                //Habilita botão excluir
                this.btnCadImovelxfotoExcluir.Enabled = true;

                //Habilita botão novo
                this.btnCadImovelxfotoNovo.Enabled = true;

                // Desabilita botões da imagem fotoLarge
                this.btCadImovelxfotoFotoLargeRemover.Enabled = false;
                this.afuCadImovelxfotoFotoLargeUpload.Enabled = false;
                this.btCadImovelxfotoFotoLargeVisualizar.Enabled = (!string.IsNullOrEmpty(this.ltCadImovelxfotoFotoLargeNome.Text));

            }
            catch (Exception ex)
            {

                throw ex;
            }
        }

        #endregion

        protected void ddlCadEstado_SelectedIndexChanged(object sender, EventArgs e)
        {
            atualizarDdlCidade(null, null);
        }

        protected void ddlCadCidade_SelectedIndexChanged(object sender, EventArgs e)
        {
            atualizarDdlBairro(null, null);
        }

        protected void ddlCadBairro_SelectedIndexChanged(object sender, EventArgs e)
        {
            atualizarDdlLogtipo(null, null);
        }

        protected void ddlCadIdTipoLog_SelectedIndexChanged(object sender, EventArgs e)
        {
            atualizarDdlLogradouro(null, null);
        }

        protected void CarregaLogradouro()
        {
            List<LogradouroVO> idLogradouroCadVOs = new List<LogradouroVO>();
            LogradouroVO idLogradouroCadVO = LogradouroVO.CreateVO();
            idLogradouroCadVO.idLogradouro = -1;
            idLogradouroCadVO.logradouro = "";
            idLogradouroCadVOs.Add(idLogradouroCadVO);

            int? idLogTipo = null;
            int? idBairro = null;
            if (!ddlCadIdTipoLog.SelectedValue.Equals("-1") && !ddlCadIdTipoLog.SelectedValue.Equals(""))
                idLogTipo = Convert.ToInt32(ddlCadIdTipoLog.SelectedValue);

            if (!ddlCadBairro.SelectedValue.Equals("-1") && !ddlCadBairro.SelectedValue.Equals(""))
                idBairro = Convert.ToInt32(ddlCadBairro.SelectedValue);

            if (idBairro != null && idLogTipo != null)
                idLogradouroCadVOs.AddRange(AlfDAO.getLogradouros(null, idBairro, idLogTipo, null, null));


            Util.CarregarCombo(this.ddlCadIdLogradouro, idLogradouroCadVOs);
        }

        protected void ddlCadIdLogradouro_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (!ddlCadIdLogradouro.SelectedValue.Equals("-1") && !ddlCadIdLogradouro.SelectedValue.Equals(""))
            {
                LogradouroVO lVO = AlfDAO.getLogradouro(int.Parse(ddlCadIdLogradouro.SelectedValue));
                //txtCadCep.Text = lVO.cep;
                ddlCadIdTipoLog.SelectedValue = Convert.ToString(lVO.idLogTipo);
            }
            else
            {
                //this.txtCadCep.Text = "";
            }
        }

        protected void ddlCadIdPromotor_SelectedIndexChanged(object sender, EventArgs e)
        {
            this.lblPromotorFone.Text = "";
            if (this.ddlCadIdPromotor.SelectedItem != null && !this.ddlCadIdPromotor.SelectedItem.Value.Equals("-1"))
            {
                PessoaVO pVO = AlfDAO.getPessoa(int.Parse(this.ddlCadIdPromotor.SelectedItem.Value), null);
                this.lblPromotorFone.Text = (pVO.fone1 + " " + pVO.fone2 + " " + pVO.fone3).Trim();
            }
        }
        protected void ddlCadIdIndicador_SelectedIndexChanged(object sender, EventArgs e)
        {
            this.lblIndicadorFone.Text = "";
            if (this.ddlCadIdIndicador.SelectedItem != null && !this.ddlCadIdIndicador.SelectedItem.Value.Equals("-1"))
            {
                PessoaVO pVO = AlfDAO.getPessoa(int.Parse(this.ddlCadIdIndicador.SelectedItem.Value), null);
                this.lblIndicadorFone.Text = (pVO.fone1 + " " + pVO.fone2 + " " + pVO.fone3).Trim();
            }
        }
        protected void ddlCadIdCliente_SelectedIndexChanged(object sender, EventArgs e)
        {
            this.lblClienteFone.Text = "";
            if (this.ddlCadIdCliente.SelectedItem != null && !this.ddlCadIdCliente.SelectedItem.Value.Equals("-1"))
            {
                PessoaVO pVO = AlfDAO.getPessoa(int.Parse(this.ddlCadIdCliente.SelectedItem.Value), null);
                this.lblClienteFone.Text = (pVO.fone1 + " " + pVO.fone2 + " " + pVO.fone3).Trim();
            }
        }

    }
}
